package com.pureut.storage.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pureut.storage.domain.WmsStockInfo;
import com.pureut.storage.dto.*;
import com.pureut.storage.vo.*;
import com.sale.common.mybatis.core.mapper.BaseMapperPlus;
import com.sale.common.mybatis.core.page.TableDataInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 仓库Mapper
 * @author: CM
 * @date: 2023/1/6    13:52
 */
@Mapper
public interface WmsStockInfoMapper extends BaseMapperPlus<WmsStockInfoMapper, WmsStockInfo, WmsStockInfo> {


    /**
     * 冻结新增仓库信息列表
     */
    Page<WmsStockInfoDto> getWmsStockInfoList(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<WmsStockInfoDto> page);

//    /**
//     * 物料在库区库位中的总数
//     */
//    Long getMaterialNumber(@Param("materialCode") String materialCode,@Param("stockInfo") String stockInfo);
//
   /**
    * 获取当前批次的总净重(在库)
    */
   Double getNetWeight(@Param("pici") String pici);
//
//    /**
//     * 根据母卷号码查询库存信息
//     * @param masterVolumeNumber
//     * @return
//     */
//    MasterVolumeDto selectMasterVolumeList(String masterVolumeNumber);
//
//    /**
//     * 根据母卷号码修改库存信息
//     */
//    int updateStockInfoById(WmsStockInfoVo wmsStockInfoVo);
//
//    /**
//     * 远程调用 删除库存信息
//     * @param truncationMasterVolumeNumber
//     * @return
//     */
//    int deleteStockInfoById(String truncationMasterVolumeNumber);
//
//    /**
//     *根据物料编码和批次号获取仓库信息
//     */
//    List<WmsStockInfoDto> getStockInfoList(WmsStockInfoVo wmsStockInfoVo);
//
//    /**
//     * 查询仓库信息（品质检验冻结查询）
//     */
//    List<WmsStockInfoDto> getFreezeStockList(QualityFreezeVo qualityFreezeVo);
//
//    /**
//     * 库存汇总
//     */
    List<WmsStockInfoSumDto> sumStockList(@Param("checkStockVo") CheckStockVo checkStockVo);

    /**
     * 库存明细列表查询
     * @return
     */
    List<WmsStockInfoDto> getStockList(@Param("checkStockVo") CheckStockVo checkStockVo);

    /**
     * 盘点中物料
     * @return
     */
    List<WmsStockInfoDto> getAllotList(@Param("checkStockVo") CheckStockVo checkStockVo);
//
//    /**
//     * 类别加编码获取仓库数据
//     */
//    List<WmsStockInfoDto> getDataByCategoryAndCode(@Param("numberList") List<String> numberList);

    /**
     * 查询制令单下的关联仓库状态为返工
     * @return
     */
    List<MoStockDto> getMoStockInfo(MoStockInfoVo moStockInfoVo);

    /**
     * 查询采购入库单关联仓库状态为批退的物料号码
     * @param purchaseStockVo
     * @return
     */
    List<MoStockDto> getPurchase(PurchaseStockVo purchaseStockVo);
//
//    /**
//     * 查询基础信息（feign调用 追溯管理页面使用 库存表）
//     * @param wsiCategory, wsiMaterialNumber
//     * @return
//     */
//    List<RetrospectManageDto> getRetrospectManageList(@Param("wsiCategory") Long wsiCategory, @Param("wsiMaterialNumber") String wsiMaterialNumber);
//
//    /**
//     * 查询基础信息（feign调用 追溯管理页面使用 仓库日志表）
//     * @param wsiCategory, wsiMaterialNumber
//     * @return
//     */
//    List<RetrospectManageDto> selectRetrospectManageInfo(@Param("wsiCategory") Long wsiCategory, @Param("wsiMaterialNumber") String wsiMaterialNumber);
//
//
//    /**
//     * 查询同批次物料 （feign调用 追溯管理页面使用 库存表）
//     * @param wsiMaterialNumber 根据物料号码查询
//     * @return
//     */
//    RetrospectMaterialDto getRetrospectMaterialList(String wsiMaterialNumber);
//
//    /**
//     * 查询同批次物料 （feign调用 追溯管理页面使用 库存日志表）
//     * @param wsiMaterialNumber 根据物料号码查询
//     * @return
//     */
//    RetrospectMaterialDto getRetrospectMaterialListLog(String wsiMaterialNumber);
//
//    /**
//     * 查询物料编码
//     * @param wsiMaterialNumber
//     * @return
//     */
//    ProductTraceabilityDto getWsiMaterialNumberList(String wsiMaterialNumber);
//
//    /**
//     * 查询产品追溯基础信息（feign调用 产品追溯页面使用 仓库表）
//     * @param wsiMaterialNumber
//     * @return
//     */
//    ProductTraceabilityDto getProductTraceabilityList(String wsiMaterialNumber);
//
//    /**
//     * 查询产品追溯基础信息（feign调用 产品追溯页面使用 仓库日志表）
//     * @param wsiMaterialNumber
//     * @return
//     */
//    ProductTraceabilityDto getProductTraceabilityListLog(String wsiMaterialNumber);
//
//
//    /**
//     * 来料打印 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getIncomingPersonalDetails(String wsiMaterialNumber);
//
//    /**
//     * 采购入库 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getPurchasePersonalDetails(String wsiMaterialNumber);
//
//    /**
//     * 生产退料 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getProductionReturnPersonalDetails(String wsiMaterialNumber);
//
//    /**
//     * 其他入库 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getOtherWarehousingPersonalDetails(String wsiMaterialNumber);
//
//    /**
//     * 生产领料 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getPickingPersonalDetails(String wsiMaterialNumber);
//
//    /**
//     * 委外发货 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getOutsourcingShipmentPersonal(String wsiMaterialNumber);
//
//    /**
//     * 采购退货 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getPurchaseReturn(String wsiMaterialNumber);
//
//    /**
//     * 其他出库 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getOtherOutbound(String wsiMaterialNumber);
//
//    /**
//     * 完工入库 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getWipCompletionList(String wsiMaterialNumber);
//
//    /**
//     * 委外入库 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getSubcontractReceiptList(String wsiMaterialNumber);
//
//    /**
//     * 返工出库 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getPickingCompleteInfoList(String wsiMaterialNumber);
//
//    /**
//     * 委外退货 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getPickingReturnsInfoList(String wsiMaterialNumber);
//
//    /**
//     * 销售退货 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getSalesReturnInfoList(String wsiMaterialNumber);
//
//    /**
//     * 销售发货 物料履历
//     * @param wsiMaterialNumber
//     * @return
//     */
//    List<MaterialResumeDto>  getSalesShipmentInfoList(String wsiMaterialNumber);

    /**
     * 库存汇总
     * @param wmsStockInfoVo
     * @return
     */
    Page<InventorySummaryDto> getInventorySummaryList(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<InventorySummaryDto> page);

    /**
     * 原料明细
     * @param wmsStockInfoVo
     * @return
     */
    Page<DetailsMaterialsDto> getInventoryMaterialDetailed(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<DetailsMaterialsDto> page);

    /**
     * 辅料明细
     * @param wmsStockInfoVo
     * @return
     */
    Page<DetailsMaterialsDto> getInventoryAccessoriesDetailed(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<DetailsMaterialsDto> page);

    /**
     * 成品明细
     * @param wmsStockInfoVo
     * @return
     */
    Page<DetailsMaterialsDto> getInventoryFinishProductDetailed(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<DetailsMaterialsDto> page);

    /**
     * 半成品明细
     * @param wmsStockInfoVo
     * @return
     */
    Page<DetailsMaterialsDto> getInventoryMaterialHalfDetailed(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<DetailsMaterialsDto> page);

    /**
     * 废料明细
     * @param wmsStockInfoVo
     * @return
     */
    Page<DetailsMaterialsDto> getInventoryWasteDetailed(@Param("wmsStockInfoVo") WmsStockInfoVo wmsStockInfoVo,@Param("page") Page<DetailsMaterialsDto> page);

    /**
     * 委外发货新增物料汇总信息
     * @return
     */
    Page<OutsourceSumDto> getOutsourceStock(@Param("page")Page<OutsourceSumDto> page,@Param("outsourceSumVo") OutsourceSumVo outsourceSumVo);
//
//    /**
//     * 查询库存信息
//     * @param wsiWarehouse
//     * @return
//     */
//    List<WmsStockInfo> selectAlarmInformationById(Long wsiWarehouse);
//
//    /**
//     * 根据母卷号码查询母卷
//     * @param wsiMaterialNumber
//     * @return
//     */
//    WmsStockInfo selectOneWmsStockInfo(String wsiMaterialNumber);
//
    /**
     * 根据库存物料编码分组查出具体的物料编码
     * @return
     */
    List<WmsStockInfoSumDto> groupMaterialCode();
//
//    /**
//     * 获取库存物料号码信息
//     * @return
//     */
//    List<WmsStockDto> getMaterialList();
//
//    void updateRecheckDate(@Param("updateWmsVos") List<UpdateWmsVo> updateWmsVos,@Param("date") String date);

    /**
     * 库存汇总
     * @param inventoryInquiryVo
     * @return
     */
    Page<InventoryInquiryDto> selectInventoryInquiryList(@Param("page") Page<MaterialRawDetailDto> page, @Param("inventoryInquiryVo") InventoryInquiryVo inventoryInquiryVo);

    /**
     * 查询原料明细
     * @param inventoryInquiryVo
     * @return
     */
    Page<MaterialRawDetailDto> selectMaterialRawDetail(@Param("page") Page<MaterialRawDetailDto> page, @Param("inventoryInquiryVo") InventoryInquiryVo inventoryInquiryVo) throws Exception;


    /**
     * 查询成品明细
     * @param inventoryInquiryVo
     * @return
     */
    Page<MaterialFinishedDto> selectMaterialFinishedDetail(@Param("page") Page<MaterialRawDetailDto> page, @Param("inventoryInquiryVo") InventoryInquiryVo inventoryInquiryVo);

    /**
     * 首页工作台成品库存金额
     */
    List<FinishAmountDto> getFinishAmountList();

    /**
     * 首页工作台原料库存金额
     */
    List<FinishAmountDto> getRawAmountList();
}
